/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package co.com.cliente;

import co.com.cliente.asteroide.vista.AsteroideEdition;
import co.com.cliente.clasificacionAsteroide.vista.ClasificacionAsteroideEdition;
import co.com.cliente.contacto.vista.ContactoEdition;
import co.com.cliente.descubridor.vista.ConsultaDescubridor;
import co.com.cliente.empresa.vista.EmpresaEditor;
import co.com.cliente.universidad.vista.UniversidadEditor;
import co.com.cliente.usuario.vista.UsuarioEditor;
import co.com.cliente.usuario.vista.UsuarioRegister;
import co.com.entities.Roles;
import co.com.entities.Usuario;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.smartgwt.client.types.Alignment;
import com.smartgwt.client.types.BackgroundRepeat;
import com.smartgwt.client.util.SC;
import com.smartgwt.client.widgets.ImgButton;
import com.smartgwt.client.widgets.Window;
import com.smartgwt.client.widgets.events.ClickEvent;
import com.smartgwt.client.widgets.events.ClickHandler;
import com.smartgwt.client.widgets.form.DynamicForm;
import com.smartgwt.client.widgets.form.fields.ButtonItem;
import com.smartgwt.client.widgets.form.fields.PasswordItem;
import com.smartgwt.client.widgets.form.fields.TextItem;
import com.smartgwt.client.widgets.layout.HLayout;
import com.smartgwt.client.widgets.layout.VLayout;
import java.math.BigDecimal;

/**
 *
 * @author dloaiza
 */
public class MasterPage extends VLayout {

    private VLayout layoutContainer;
    private HLayout buttonsContainerI;
    private ImgButton btnAsteroides, btnClasificacion, btnContacto, btnEmpresa, btnUniversidad, btnUsuario,
            btnRegistrarse, btnIniciarSesion, btnSalir, btnDescubrimientos;

    public MasterPage(int indicador) {
        setWidth("1220px");
        setHeight("595px");
        setBackgroundImage(GWT.getModuleBaseURL() + "ppal.png");
        setBackgroundRepeat(BackgroundRepeat.NO_REPEAT);

        btnAsteroides = new ImgButton();
        btnAsteroides.setSrc(GWT.getModuleBaseURL() + "btnasteroides.png");
        btnAsteroides.setShowRollOver(false);
        btnAsteroides.setShowDown(false);
        btnAsteroides.setWidth("96px");
        btnAsteroides.setHeight("37px");
        
        btnClasificacion = new ImgButton();
        btnClasificacion.setSrc(GWT.getModuleBaseURL() + "btnclasificaciones.png");
        btnClasificacion.setShowRollOver(false);
        btnClasificacion.setShowDown(false);
        btnClasificacion.setWidth("125px");
        btnClasificacion.setHeight("37px");

        btnContacto = new ImgButton();
        btnContacto.setSrc(GWT.getModuleBaseURL() + "btncontactos.png");
        btnContacto.setShowRollOver(false);
        btnContacto.setShowDown(false);
        btnContacto.setWidth("96px");
        btnContacto.setHeight("37px");


        btnEmpresa = new ImgButton();
        btnEmpresa.setSrc(GWT.getModuleBaseURL() + "btnempresas.png");
        btnEmpresa.setShowRollOver(false);
        btnEmpresa.setShowDown(false);
        btnEmpresa.setWidth("97px");
        btnEmpresa.setHeight("36px");

        btnUniversidad = new ImgButton();
        btnUniversidad.setSrc(GWT.getModuleBaseURL() + "btnuniversidades.png");
        btnUniversidad.setShowRollOver(false);
        btnUniversidad.setShowDown(false);
        btnUniversidad.setWidth("124px");
        btnUniversidad.setHeight("37px");

        btnUsuario = new ImgButton();
        btnUsuario.setSrc(GWT.getModuleBaseURL() + "btnusuarios.png");
        btnUsuario.setShowRollOver(false);
        btnUsuario.setShowDown(false);
        btnUsuario.setWidth("87px");
        btnUsuario.setHeight("37px");

        btnRegistrarse = new ImgButton();
        btnRegistrarse.setSrc(GWT.getModuleBaseURL() + "btnregistrarse.png");
        btnRegistrarse.setShowRollOver(false);
        btnRegistrarse.setShowDown(false);
        btnRegistrarse.setWidth("110px");
        btnRegistrarse.setHeight("37px");

        btnIniciarSesion = new ImgButton();
        btnIniciarSesion.setSrc(GWT.getModuleBaseURL() + "btniniciarsesion.png");
        btnIniciarSesion.setShowRollOver(false);
        btnIniciarSesion.setShowDown(false);
        btnIniciarSesion.setWidth("110px");
        btnIniciarSesion.setHeight("37px");

        btnSalir = new ImgButton();
        btnSalir.setSrc(GWT.getModuleBaseURL() + "btnsalir.png");
        btnSalir.setShowRollOver(false);
        btnSalir.setShowDown(false);
        btnSalir.setWidth("55px");
        btnSalir.setHeight("37px");

        btnDescubrimientos = new ImgButton();
        btnDescubrimientos.setSrc(GWT.getModuleBaseURL() + "btndescubrimientos.png");
        btnDescubrimientos.setShowRollOver(false);
        btnDescubrimientos.setShowDown(false);
        btnDescubrimientos.setWidth("146px");
        btnDescubrimientos.setHeight("37px");

        layoutContainer = new VLayout();
        layoutContainer.addStyleName("container");
        layoutContainer.setWidth("1170px");
        layoutContainer.setHeight("425px");


        buttonsContainerI = new HLayout();
        buttonsContainerI.addStyleName("botones");
        buttonsContainerI.setBackgroundImage(GWT.getModuleBaseURL() + "fondoBotones.png");
        buttonsContainerI.setBackgroundRepeat(BackgroundRepeat.NO_REPEAT);
        buttonsContainerI.setWidth("1220px");
        buttonsContainerI.setHeight("90px");

        
        buttonsContainerI.addMembers(btnRegistrarse, btnIniciarSesion);
        
        buttonsContainerI.setAlign(Alignment.RIGHT);
        

        
        setMembers(buttonsContainerI, layoutContainer);

        btnRegistrarse.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                UsuarioRegister usuarioR = new UsuarioRegister();
                layoutContainer.addMember(usuarioR);
            }
        });

        btnIniciarSesion.addClickHandler(new ClickHandler() {
            public void onClick(ClickEvent event) {
                IniciarSesion iniciar = new IniciarSesion();
                iniciar.show();
            }
        });
        
        btnAsteroides.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                AsteroideEdition asteroide = new AsteroideEdition();
                layoutContainer.removeMembers(layoutContainer.getMembers());
                layoutContainer.addMember(asteroide);
            }
        });
        btnClasificacion.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                ClasificacionAsteroideEdition clasificacionAsteroideEdition = new ClasificacionAsteroideEdition();
                layoutContainer.removeMembers(layoutContainer.getMembers());
                layoutContainer.addMember(clasificacionAsteroideEdition);
            }
        });
        btnContacto.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                ContactoEdition contactoEdition = new ContactoEdition();
                layoutContainer.removeMembers(layoutContainer.getMembers());
                layoutContainer.addMember(contactoEdition);
            }
        });
        
        btnEmpresa.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                EmpresaEditor empresaEdition = new EmpresaEditor();
                layoutContainer.removeMembers(layoutContainer.getMembers());
                layoutContainer.addMember(empresaEdition);
            }
        });
        
        btnUniversidad.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                UniversidadEditor universidadEdition = new UniversidadEditor();
                layoutContainer.removeMembers(layoutContainer.getMembers());
                layoutContainer.addMember(universidadEdition);
            }
        });
        
        btnUsuario.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                UsuarioEditor usuarioEdition = new UsuarioEditor();
                layoutContainer.removeMembers(layoutContainer.getMembers());
                layoutContainer.addMember(usuarioEdition);
            }
        });
        
        btnDescubrimientos.addClickHandler(new ClickHandler() {

            public void onClick(ClickEvent event) {
                ConsultaDescubridor consultaDescubridor = new ConsultaDescubridor(layoutContainer);
                layoutContainer.removeMembers(layoutContainer.getMembers());
                layoutContainer.addMember(consultaDescubridor);
            }
        });
    }
    
    public void refrescarMenu(Roles rol){
        buttonsContainerI.removeMembers(buttonsContainerI.getMembers());
        if(rol.getCdrol().toString().equals("1")){
            buttonsContainerI.setMembers(btnAsteroides, btnClasificacion, btnContacto, btnEmpresa, btnUniversidad, btnUsuario, btnDescubrimientos, btnSalir);
        }
        else{
            buttonsContainerI.addMembers(btnAsteroides, btnClasificacion, btnSalir);
        }
    }

    public class IniciarSesion extends Window {

        private TextItem txtUsuario;
        private PasswordItem txtContrasena;
        private ButtonItem btnIngresar;
        private DynamicForm frmIniciarSesion;

        public IniciarSesion() {
            txtUsuario = new TextItem();
            txtUsuario.setName("txtUsuario");
            txtUsuario.setTitle("Usuario");
            txtUsuario.setWidth("350px");
            txtUsuario.setHeight("40px");
            txtUsuario.setAlign(Alignment.LEFT);

            txtContrasena = new PasswordItem();
            txtContrasena.setName("txtContrasena");
            txtContrasena.setTitle("Contraseña");
            txtContrasena.setWidth("350px");
            txtContrasena.setHeight("40px");
            txtContrasena.setAlign(Alignment.LEFT);

            btnIngresar = new ButtonItem();
            btnIngresar.setName("btnIngresar");
            btnIngresar.setTitle("Ingresar");
            btnIngresar.setWidth("125px");
            btnIngresar.setHeight("30px");
            btnIngresar.setAlign(Alignment.CENTER);

            frmIniciarSesion = new DynamicForm();
            frmIniciarSesion.setNumCols(1);
            frmIniciarSesion.setItems(txtUsuario, txtContrasena, btnIngresar);

            setShowCloseButton(true);
            setCanAcceptDrop(false);
            setCanDrag(false);
            setCanDragResize(false);
            setCanDragScroll(false);
            centerInPage();
            setTitle("Iniciar sesión");
            setWidth("400px");
            setHeight("100px");

            addMember(frmIniciarSesion);

            btnIngresar.addClickHandler(new com.smartgwt.client.widgets.form.fields.events.ClickHandler() {
                public void onClick(com.smartgwt.client.widgets.form.fields.events.ClickEvent event) {
                    if (frmIniciarSesion.validate()) {
                        Services.getUsuarioServices().validarUsuario(txtUsuario.getValueAsString(), txtContrasena.getValueAsString(), new AsyncCallback<Usuario>() {
                            public void onFailure(Throwable caught) {
                                SC.say("Señor usuario no puede ingresar al sistema");
                            }

                            public void onSuccess(Usuario result) {
                                destroy();
                                if (result == null) {
                                    SC.say("Señor usuario usted no se encuentra autorizado para ingresar al sistema");
                                } else {
                                    refrescarMenu(result.getCdrol());
                                }
                            }
                        });
                    } else {
                        SC.say("Señor usuario, debe ingresar el usuario y contraseña");
                    }
                }
            });
        }
    }
}
